from time import sleep

from wechat_test.page.base_page import BasePage
from wechat_test.page.search_page import SearchPage


class TheatrePage(BasePage):
    # 剧场页面

    def freepage(self):
        '''
        免费页
        1，剧场页面进入一本剧目进入播放页
        2，选集免费剧集播放，播放成功切换成功
        :return:
        '''


        pass

    def paidpage(self, name, text):
        '''
        计费页
        name 要打开得剧目
        text 充值弹框得文案
        1，剧场页面进入一本剧目进入播放页
        2，选集计费剧集播放，弹出用户选择
        3，选择充值解锁-弹出资费页
        :return:
        '''
        #点击热门进入列表
        count= 0
        while count<10:
            sleep(1)
            try:
                self.log_info(f'开始查找短剧：{name}')
                self.poco(text=f'{name}').exists()
                self.poco(text=f'{name}').click()
                self.log_info(f'{count}找到短剧并播放：{name}')
                sleep(3)
                self.log_info(f'点击播放暂停：{name}')
                self.poco(resourceId='com.tencent.mm:id/yq', name='com.tencent.mm:id/yq').click()
                self.log_info(f'点击选集按钮：{name}')
                self.poco(text=f'{name}').click()
                # 通过坐标点选择15集计费剧目，如果换设备可能点不到
                self.log_info(f'根据坐标点击计费集21：{name}')
                self.poco(type='android.view.ViewGroup',name='com.tencent.mm:id/yq').click([0.45, 0.799])
                sleep(1)
                break
            except Exception as e:
                self.log_info(f'出现错误：{e}')
                self.log_info(f'未找到该短剧：{name}')
            count += 1
            self.log_info(f'查找{count}次')
        sleep(1)
        # 循环查询存在充值弹框，超过11次报错误
        count = 1
        sun = 11
        texts = []
        while count < sun:
            sleep(1)
            # 如果查到测试充值就算弹出资费页，就跳出循环
            if self.poco(text=f'{text}').exists():
                self.log_info(f"查询{count}次找到{text}")
                sleep(1)
                self.poco(text=f'{text}').click()
                self.log_info(f'点击[测试充值0.01]弹框拉起支付成功')
                sleep(3)
                for x in range(0, 10):
                    ls = self.poco(f"com.tencent.mm:id/tenpay_keyboard_{x}")
                    texts.append(ls.attr('text'))
                break
            else:
                try:
                    self.log_info(f'查询{count}次没找到{text}，点击屏幕加载元素')
                    self.poco(name='com.tencent.mm:id/yq').click()
                except:
                    self.log_info('点击屏幕加载元素')
                    self.poco(package='com.tencent.mm', name='android.widget.FrameLayout').click()

                count += 1
        if count >= sun:

            self.log_info(f'循环查询{count-1}次元素没找到，坐标点击')
            self.poco('com.tencent.mm:id/yq').click([0.3, 0.9])
            sleep(5)
            try:
                for x in range(0, 10):
                    ls = self.poco(f"com.tencent.mm:id/tenpay_keyboard_{x}")
                    texts.append(ls.attr('text'))
                self.log_info(f'获取密码数值：{texts}')
            except Exception as e:
                self.log_info(f'异常处理{e}')
            finally:
                self.poco(name='android.widget.LinearLayout').click([0.1, 0.328])
                # self.poco(name='关闭', type='android.widget.Button').click()
        return texts

    def theatre_list(self):
        '''
        1,剧场页面 页面加载成功
        2，有追剧，热门，最新入口，有本周推荐
        Returns
        '''
        elements = []
        if self.poco(text='剧场').exists():
            self.poco(text='剧场').click()
            sleep(2)
            for i in self.poco(name='android.widget.TextView', type='android.widget.TextView'):
                elements.append(i.get_text())
        else:
            self.log_error('找不到剧场，请确认是否小程序首页')
        self.log_info(f'剧场首页元素：{elements}')
        return elements

    def gotosearch(self):
        """
        跳转搜索
        :return:
        """
        return SearchPage(self.poco)
